/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author root
 */
public class BD_Sistema {

    private static BD_Sistema instance;
    private HashMap<String, Usuario> bd_usuario;
    private HashMap<Integer, Imovel> bd_imovel;

    private BD_Sistema() {
        bd_usuario = new HashMap();
        bd_imovel = new HashMap();
    }

    public static BD_Sistema getInstance() {
        if (instance == null) {
            instance = new BD_Sistema();
        }
        return instance;
    }

    public boolean insereUsuario(Usuario u) {
        if (bd_usuario.containsKey(u.getLogin())) {
            return false;
        } else {
            bd_usuario.put(u.getLogin(), u);
        }
        return true;
    }

    public Usuario buscaUsuario(String login) {
        if (!bd_usuario.containsKey(login)) {
            return null;
        } else {
            Usuario u = bd_usuario.get(login);
            return u;
        }
    }

    public boolean checaUsuario(String login) {
        if (!bd_usuario.containsKey(login)) {
            return false;
        } else {
            Usuario u = bd_usuario.get(login);
            return true;
        }
    }

    public boolean checaSenha(String p_login, String p_s) {
        Usuario u = bd_usuario.get(p_login);
        if (u.getSenha().equals(p_s)) {
            return true;
        } else {
            return false;
        }
    }

    public HashMap<String, Usuario> getBd_usuario() {
        return bd_usuario;
    }

    public void setBd_usuario(HashMap<String, Usuario> bd_usuario) {
        this.bd_usuario = bd_usuario;
    }

    /**
     * ****************************************************
     */
    public boolean insereImovel(Imovel i) {

        if (bd_imovel.containsKey(i.getId_imovel())) {
            return false;
        } else {
            bd_imovel.put(i.getId_imovel(), i);
            return true;
        }
    }

    public boolean checaImovel(int p_id) {
        if (bd_imovel.containsKey(p_id)) {
            return true;
        } else {
            return false;
        }
    }

    public Imovel buscaImovel(int id) {
        if (bd_imovel.containsKey(id)) {
            return bd_imovel.get(id);
        } else {
            return null;
        }
    }

    public int qtdeImovel() {
        return bd_imovel.size();
    }

    public HashMap<Integer, Imovel> getBd_imovel() {
        return bd_imovel;
    }

    public void setBd_imovel(HashMap<Integer, Imovel> bd_imovel) {
        this.bd_imovel = bd_imovel;
    }

    public void associa_ImovelUsuario(int imovel, Usuario u) {
        u.addImovel(imovel);
    }

    public Usuario donoImovel(int id_imovel) {
        for (Map.Entry u : bd_usuario.entrySet()) {
            Usuario V = (Usuario) u.getValue();
            if (V.getPropriedades().contains(id_imovel)) {
                return V;
            }
        }
        return null;
    }
}

